package 链表题.根据值删除节点;

import 链表题.ListNode;

/**
 * 根据值删除节点
 */
public class Test1 {

    /**
     * @param head 链表头
     * @param val 目标值
     * @return 删除后的链表头
     */

    // 方法一:
    public static ListNode removeElements(ListNode head, int val) {
        ListNode s = new ListNode(-1, head);
        ListNode p1 = s;
        ListNode p2 = s.next;
        while (p2 != null) {
            if(p2.val == val) {
                p1.next = p2.next;
                p2 = p1.next;
            } else {
                p1 = p1.next;
                p2 = p1.next;
            }
        }
        return s.next;
    }

    public static void main(String[] args) {
        ListNode o5 = new ListNode(5,null);
        ListNode o4 = new ListNode(4,o5);
        ListNode o3 = new ListNode(3,o4);
        ListNode o2 = new ListNode(2,o3);
        ListNode o1 = new ListNode(1,o2);
        ListNode o = new ListNode(3,o1);
        System.out.println(o);
        System.out.println(removeElements(o, 3));
    }
}
